 /*********************************************************************************************************************
* TC264 Opensourec Library ����TC264 ��Դ�⣩��һ�����ڹٷ� SDK �ӿڵĵ�������Դ��
* Copyright (c) 2022 SEEKFREE ��ɿƼ�
*
* ���ļ��� TC264 ��Դ���һ����
*
* TC264 ��Դ�� ���������
* �����Ը���������������ᷢ���� GPL��GNU General Public License���� GNUͨ�ù�������֤��������
* �� GPL �ĵ�3�棨�� GPL3.0������ѡ��ģ��κκ����İ汾�����·�����/���޸���
*
* ����Դ��ķ�����ϣ�����ܷ������ã�����δ�������κεı�֤
* ����û�������������Ի��ʺ��ض���;�ı�֤
* ����ϸ����μ� GPL
*
* ��Ӧ�����յ�����Դ���ͬʱ�յ�һ�� GPL �ĸ���
* ���û�У������<https://www.gnu.org/licenses/>
*
* ����ע����
* ����Դ��ʹ�� GPL3.0 ��Դ����֤Э�� ������������Ϊ���İ汾
* ��������Ӣ�İ��� libraries/doc �ļ����µ� GPL3_permission_statement.txt �ļ���
* ����֤������ libraries �ļ����� �����ļ����µ� LICENSE �ļ�
* ��ӭ��λʹ�ò����������� ���޸�����ʱ���뱣����ɿƼ��İ�Ȩ����������������
*
* �ļ�����          cpu0_main
* ��˾����          �ɶ���ɿƼ����޹�˾
* �汾��Ϣ          �鿴 libraries/doc �ļ����� version �ļ� �汾˵��
* ��������          ADS v1.8.0
* ����ƽ̨          TC264D
* ��������          https://seekfree.taobao.com/
*
* �޸ļ�¼
* ����              ����                ��ע
* 2022-09-15       pudding            first version
********************************************************************************************************************/
#include "zf_common_headfile.h"
#pragma section all "cpu0_dsram"
// ���������#pragma section all restore���֮���ȫ�ֱ���������CPU0��RAM��


// ���̵��뵽����֮��Ӧ��ѡ�й���Ȼ����refreshˢ��һ��֮���ٱ���
// ����Ĭ������Ϊ�ر��Ż��������Լ��һ�����ѡ��properties->C/C++ Build->Setting
// Ȼ�����Ҳ�Ĵ������ҵ�C/C++ Compiler->Optimization->Optimization level�������Ż��ȼ�
// һ��Ĭ���½����Ĺ��̶���Ĭ�Ͽ�2���Ż�����˴��Ҳ��������Ϊ2���Ż�

// ����TCϵ��Ĭ���ǲ�֧���ж�Ƕ�׵ģ�ϣ��֧���ж�Ƕ����Ҫ���ж���ʹ�� interrupt_global_enable(0); �������ж�Ƕ��
// �򵥵�˵ʵ���Ͻ����жϺ�TCϵ�е�Ӳ���Զ������� interrupt_global_disable(); ���ܾ���Ӧ�κε��жϣ������Ҫ�����Լ��ֶ����� interrupt_global_enable(0); �������жϵ���Ӧ��

// *************************** ����Ӳ������˵�� ***************************
// ʹ����ɿƼ� Ӣ����TriCore ��������������
//      ֱ�ӽ���������ȷ�����ں��İ�ĵ������ؽӿڼ���
// ʹ�� USB-TTL ģ������
//      ģ��ܽ�            ��Ƭ���ܽ�
//      USB-TTL-RX          �鿴 zf_common_debug.h �ļ��� DEBUG_UART_TX_PIN �궨������� Ĭ�� P14_0
//      USB-TTL-TX          �鿴 zf_common_debug.h �ļ��� DEBUG_UART_RX_PIN �궨������� Ĭ�� P14_1
//      USB-TTL-GND         ���İ��Դ�� GND
//      USB-TTL-3V3         ���İ� 3V3 ��Դ
// ���������Ҷ���������ͷ ��Ӧ��������ͷ�ӿ� ��ע������
//      ģ��ܽ�            ��Ƭ���ܽ�
//      TXD                 �鿴 zf_device_mt9v03x.h �� MT9V03X_COF_UART_TX �궨��
//      RXD                 �鿴 zf_device_mt9v03x.h �� MT9V03X_COF_UART_RX �궨��
//      PCLK                �鿴 zf_device_mt9v03x.h �� MT9V03X_PCLK_PIN �궨��
//      VSY                 �鿴 zf_device_mt9v03x.h �� MT9V03X_VSYNC_PIN �궨��
//      D0-D7               �鿴 zf_device_mt9v03x.h �� MT9V03X_DATA_PIN �궨�� �Ӹö��忪ʼ�������˸�����
//      GND                 ���İ��Դ�� GND
//      3V3                 ���İ� 3V3 ��Դ



// *************************** ���̲���˵�� ***************************
// 1.���İ���¼��ɱ����� �����İ���������� �嵽�� ����ͷ�������������ͷ�ӿ� ע������
// 2.�����ϵ� ���ߺ��İ�������Ϻ��ϵ� �ٽ��������������� USB-TTL ģ�����ӵ���
// 3.������ʹ������ͷ�Ĵ������������ִ򿪶�Ӧ�Ĵ��� ���ڲ�����Ϊ zf_common_debug.h �ļ��� DEBUG_UART_BAUDRATE �궨�� Ĭ�� 115200�����İ尴�¸�λ����
// 4.��������ѡ��Ҷ�ͼ�� �ֱ�����д��188 ��120 ��ѡ��ʼ�ɼ�
// 5.��λ��������ʾͼ��
// �������������˵�����ز��� ����ձ��ļ����·� ���̳�������˵�� �����Ų�

// **************************** �������� ****************************

//这是中午 的注释
extern EulerAngleTypedef SystemAttitudeRate;        /////��̬���ٶ�
extern EulerAngleTypedef       SystemAttitude;            /////��̬��
extern BMX055Datatypedef       BMX055Data;
//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
float gryo_zzz[4]={0};
int core0_main(void)
{
    clock_init();                   // ��ȡʱ��Ƶ��<��ر���>
    debug_init();                   // ��ʼ��Ĭ�ϵ��Դ���
    // �˴���д�û����� ���������ʼ�������
//    Test_TFT18();
    User_Init();

    uint32 Key_Data = 0;
	cpu_wait_event_ready();         // �ȴ����к��ĳ�ʼ�����
	while (TRUE)
	{
	    system_delay_ms(100);
	    gpio_toggle_level(led_Pin);
	    User_DeBug();
//        system_delay_ms(1);
//        system_delay_ms(100);
//	    dl1a_get_distance();
//       if(dl1a_finsh_flag == 1)
//       {
//           dl1a_finsh_flag = 0;
//           if(dl1a_distance_mm<8190)
//           printf("dl1a distance: %d mm\r\n", dl1a_distance_mm);
//       }
//       system_delay_ms(10);
//
//        oled_show_float(24, 0, SystemAttitude.Pitch, 4, 4);
//        oled_show_float(24, 1, SystemAttitudeRate.Pitch, 4, 4);
//        oled_show_float(24, 0, TURN_Diff_P_Buf, 4, 4);



//        oled_show_float(24, 4, 100, 4, 4);
//        oled_show_float(24, 5, 10, 4, 4);
//        oled_show_float(24, 2, Speed_Aim, 4, 4);
//        oled_show_float(24, 3, tureKp, 4, 4);


//        float new_gyro = weightedFiltering(gryo_zzz,imugyro_z+0.67);
//        oled_show_float(0, 1, imugyro_z+0.67,4,4);
//        oled_show_float(60, 1,new_gyro_z ,4,4);


//          oled_show_float(0, 2, ad_value[0],4,4);
//          oled_show_float(0, 3, ad_value[1],4,4);
//          oled_show_float(0, 4, ad_value[2], 4, 4);
//          oled_show_float(0, 5, ad_value[4], 4, 4);
//          oled_show_float(0, 6, ad_value[5], 4, 4);

//        oled_show_float(24, 4, Balance_Speed_Out, 4, 4);
//        oled_show_float(24, 5, angle_value, 4, 4);
//        oled_show_float(24, 6, Speed_OutAngle, 4, 4);

//        oled_show_float(24, 7, TurnSpeed_Out, 4, 4);


//        oled_show_int(48, 0, eulerAngle.roll,5);
//        oled_show_int(0, 0, SystemAttitude.Pitch,5);
//        oled_show_int(48, 0, SystemAttitude.Roll,5);
//        oled_show_int(72, 0, Balance_Dir_AG_Angle,5);

//        oled_show_int(0, 2, imu660ra_gyro_x,5);
//        oled_show_int(48, 2, imu660ra_gyro_y,5);
//        oled_show_int(96, 2, imu660ra_gyro_z,5);
//
//        oled_show_int(0, 3, imu660ra_acc_x,5);
//        oled_show_int(48, 3, imu660ra_acc_y,5);
//        oled_show_int(96, 3, imu660ra_acc_z,5);

//        oled_show_float(0, 4, Att_Angle.pit,3,1);
//        oled_show_float(48, 4, Att_Angle.rol,3,1);
//        oled_show_float(96, 4, Att_Angle.yaw,3,1);
//
//        oled_show_float(48, 5, imugyro_y,3,3);
////        oled_show_float(48, 6, imu660ra_acc_y,3,3);
////        oled_show_float(48, 7, imu660ra_acc_x,3,3);





//        oled_show_float(24, 3, ZL_jiaosudu.output,3,3);
//        oled_show_float(48, 3, ZL_jiaosudu.q3,3,3);
//        oled_show_float(96, 2, (Balance_D * imugyro_y),3,3);
//        oled_show_float(24, 2, Balance_P * imugyro_y,3,3);

//        oled_show_int(0, 5, values[0],5);
//        oled_show_int(48, 5, values[1],5);
//        oled_show_int(96, 5, values[2],5);

//        oled_show_float(0, 6, imu660ra_gyro_transition(values[3]),3,3);
//        oled_show_float(48, 6, imu660ra_gyro_transition(values[4]),3,3);
//        oled_show_float(96, 6, imu660ra_gyro_transition(values[5]),3,3);
//        oled_show_float(0, 7, ZL_jiaosudu.output,3,3);
//        oled_show_float(0, 6, ZL_jiaodu.output,3,3);
//        oled_show_float(48, 6, ZL_jiaosudu.q2,3,3);


//        VOFA_debug[9] = imu660ra_gyro_transition(values[3]) * 1000;
//        VOFA_debug[10] = imu660ra_gyro_transition(values[4]) * 1000;
//        VOFA_debug[11] = imu660ra_gyro_transition(values[5]) * 1000;
//
//        VOFA_debug[2] = icm20602_gyro_x;
//        VOFA_debug[3] = icm20602_gyro_y;
//        VOFA_debug[4] = icm20602_gyro_z;
//        VOFA_debug[5] = icm20602_acc_x;
//        VOFA_debug[6] = icm20602_acc_y;
//        VOFA_debug[7] = icm20602_acc_z;
//
////        VOFA_debug[2] = AngleAim - SystemAttitude.Pitch;
////        VOFA_debug[3] = Speed_Aim;
////        VOFA_debug[4] = Encoder_RawSpeedSum;
////        VOFA_debug[5] = Speed_Aim - Encoder_RawSpeedSum;
////        VOFA_debug[6] = Speed_OutAngleNew;
////        VOFA_debug[7] = Speed_OutAngle;
//        VOFA_debug[8] =  AngleAim - SystemAttitude.Pitch + Speed_OutAngle*(!Ramp_add_time);
//        VOFA_debug[9] = Balance_Speed_Out;
//        VOFA_debug[10] = Tur3nSpeed_Out;

//
//        if(blue_test == 1)

//        UserDebug(Debug_SerialTX);

//        printf("%dʱ��",(int)Ramp_count);
//        printf("%dʱ��",(int)Ramp_count);
        // �˴���д��Ҫѭ��ִ�еĴ���
	}

}

#pragma section all restore
// **************************** �������� ****************************

// *************************** ���̳�������˵�� ***************************
// ��������ʱ�밴�������������б����
// ����1����λ��û��ͼ��
//      �鿴�������ִ򿪵��Ƿ�����ȷ�Ĵ��ڣ����򿪵� COM ���Ƿ��Ӧ���ǵ������������� USB-TTL ģ��� COM ��
//      �����ʹ����ɿƼ� Ӣ����TriCore �������������ӣ���ô������������Ƿ��ɶ��������İ崮�������Ƿ��Ѿ����ӣ��������߲鿴���İ�ԭ��ͼ�����ҵ�
//      �����ʹ�� USB-TTL ģ�����ӣ���ô��������Ƿ������Ƿ��ɶ���ģ�� TX �Ƿ����ӵĺ��İ�� RX��ģ�� RX �Ƿ����ӵĺ��İ�� TX
//      ������ںͽ��߶����� �鿴LED���Ƿ���˸ �����˸֤����ʼ��ʧ�� �������ͷ�����Ƿ����� �����Ƿ���ȷ
//      �������ͷ���߶����� LED�Ʋ���˸ ��ϵ�����ͷ�����
// ����2��ͼ�����롢��λ��������
//      ����Ƿ�ѡ��ĻҶ�ͼ��ѡ��
//      ����Ƿ���ȷ������ͼ����Ⱥ͸߶� ���Ⱥ͸߶Ȳ鿴 zf_device_mt9v03x.h �� MT9V03X_W �� MT9V03X_H �궨��
